// 和为s的连续正数序列
// 输入一个正整数 target ，输出所有和为 target 的连续正整数序列（至少含有两个数）。
// 序列内的数字由小到大排列，不同序列按照首个数字从小到大排列。


//用滑动窗口方法
//https://leetcode-cn.com/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/solution/shi-yao-shi-hua-dong-chuang-kou-yi-ji-ru-he-yong-h/
int** findContinuousSequence(int target, int* returnSize, int** returnColumnSizes){
    int **arr = malloc(sizeof(int *) * target);
    *returnColumnSizes = malloc(sizeof(int)* target);
    int i = 1, j = 1, sum = 0, cnt = 0, k;
    while (target/2 >= i) {	
        if (sum < target) {	//右边界移动
            sum += j;
            j++;
        } else if (sum > target) {	//左边界移动
            sum -= i;
            i++;
        } else {
            (*returnColumnSizes)[cnt] = j-i;
            arr[cnt] = malloc(sizeof(int)*(j-i));
            for (k = i; k < j; k++) {
                arr[cnt][k-i] = k;
            }
            cnt++;
            sum -= i;	//左边界移动
            i++;       
        }
    }
    *returnSize = cnt;

    return arr;
}